package x.trident.core.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 时区枚举
 *
 * @author jason.yan
 * @since 2022/9/24
 */
@AllArgsConstructor
@Getter
public enum TimeZoneEnum {

    ETC_GMT_ADD_12("Etc/GMT+12", "UTC-12:00", "国际日期变更线西"),
    ETC_GMT_ADD_11("Etc/GMT+11", "UTC-11:00", "协调世界时-11"),
    PACIFIC_HONOLULU("Pacific/Honolulu", "UTC-10:00", "夏威夷"),
    AMERICA_ANCHORAGE("America/Anchorage", "UTC-09:00", "安克雷奇"),
    AMERICA_SANTA_ISABEL("America/Santa_Isabel", "UTC-08:00", "下加利福尼亚州"),
    AMERICA_LOS_ANGELES("America/Los_Angeles", "UTC-08:00", "太平洋时间（美国和加拿大）"),
    AMERICA_CHIHUAHUA("America/Chihuahua", "UTC-07:00", "奇瓦瓦,拉巴斯,马萨特兰"),
    AMERICA_PHOENIX("America/Phoenix", "UTC-07:00", "亚利桑那"),
    AMERICA_DENVER("America/Denver", "UTC-07:00", "山地时间（美国和加拿大）"),
    AMERICA_GUATEMALA("America/Guatemala", "UTC-06:00", "中美洲"),
    AMERICA_CHICAGO("America/Chicago", "UTC-06:00", "中部时间（美国和加拿大）"),
    AMERICA_REGINA("America/Regina", "UTC-06:00", "萨斯喀彻温"),
    AMERICA_MEXICO_CITY("America/Mexico_City", "UTC-06:00", "瓜达拉哈拉,墨西哥城,蒙特雷"),
    AMERICA_BOGOTA("America/Bogota", "UTC-05:00", "波哥大,利马,基多"),
    AMERICA_INDIANA_INDIANAPOLIS("America/Indiana/Indianapolis", "UTC-05:00", "印地安那州（东部）"),
    AMERICA_NEW_YORK("America/New_York", "UTC-05:00", "东部时间（美国和加拿大）"),
    AMERICA_CARACAS("America/Caracas", "UTC-04:30", "加拉加斯"),
    AMERICA_HALIFAX("America/Halifax", "UTC-04:00", "大西洋时间（加拿大）"),
    AMERICA_ASUNCION("America/Asuncion", "UTC-04:00", "亚松森"),
    AMERICA_LA_PAZ("America/La_Paz", "UTC-04:00", "乔治敦,拉巴斯,马瑙斯,圣胡安"),
    AMERICA_CUIABA("America/Cuiaba", "UTC-04:00", "库亚巴"),
    AMERICA_SANTIAGO("America/Santiago", "UTC-04:00", "圣地亚哥"),
    AMERICA_ST_JOHNS("America/St_Johns", "UTC-03:30", "纽芬兰"),
    AMERICA_SAO_PAULO("America/Sao_Paulo", "UTC-03:00", "巴西利亚"),
    AMERICA_GODTHAB("America/Godthab", "UTC-03:00", "格陵兰"),
    AMERICA_CAYENNE("America/Cayenne", "UTC-03:00", "卡宴,福塔雷萨"),
    AMERICA_ARGENTINA_BUENOS_AIRES("America/Argentina/Buenos_Aires", "UTC-03:00", "布宜诺斯艾利斯"),
    AMERICA_MONTEVIDEO("America/Montevideo", "UTC-03:00", "蒙得维的亚"),
    ETC_GMT_2("Etc/GMT+2", "UTC-02:00", "协调世界时-2"),
    ATLANTIC_CAPE_VERDE("Atlantic/Cape_Verde", "UTC-01:00", "佛得角群岛"),
    ATLANTIC_AZORES("Atlantic/Azores", "UTC-01:00", "亚速尔群岛"),
    AFRICA_CASABLANCA("Africa/Casablanca", "UTC+00:00", "卡萨布兰卡"),
    ATLANTIC_REYKJAVIK("Atlantic/Reykjavik", "UTC+00:00", "蒙罗维亚,雷克雅未克"),
    EUROPE_LONDON("Europe/London", "UTC+00:00", "都柏林,爱丁堡,里斯本,伦敦"),
    ETC_GMT("Etc/GMT", "UTC+00:00", "协调世界时"),
    EUROPE_BERLIN("Europe/Berlin", "UTC+01:00", "阿姆斯特丹,柏林,伯尔尼,罗马,斯德哥尔摩,维也纳"),
    EUROPE_PARIS("Europe/Paris", "UTC+01:00", "布鲁塞尔,哥本哈根,马德里,巴黎"),
    AFRICA_LAGOS("Africa/Lagos", "UTC+01:00", "中非西部"),
    EUROPE_BUDAPEST("Europe/Budapest", "UTC+01:00", "贝尔格莱德,布拉迪斯拉发,布达佩斯,卢布尔雅那,布拉格"),
    EUROPE_WARSAW("Europe/Warsaw", "UTC+01:00", "萨拉热窝,斯科普里,华沙,萨格勒布"),
    AFRICA_WINDHOEK("Africa/Windhoek", "UTC+01:00", "温得和克"),
    EUROPE_ISTANBUL("Europe/Istanbul", "UTC+02:00", "雅典,布加勒斯特,伊斯坦布尔"),
    EUROPE_KIEV("Europe/Kiev", "UTC+02:00", "赫尔辛基,基辅,里加,索非亚,塔林,维尔纽斯"),
    AFRICA_CAIRO("Africa/Cairo", "UTC+02:00", "开罗"),
    ASIA_DAMASCUS("Asia/Damascus", "UTC+02:00", "大马士革"),
    ASIA_AMMAN("Asia/Amman", "UTC+02:00", "安曼"),
    AFRICA_JOHANNESBURG("Africa/Johannesburg", "UTC+02:00", "哈拉雷,比勒陀利亚"),
    ASIA_JERUSALEM("Asia/Jerusalem", "UTC+02:00", "耶路撒冷"),
    ASIA_BEIRUT("Asia/Beirut", "UTC+02:00", "贝鲁特"),
    ASIA_BAGHDAD("Asia/Baghdad", "UTC+03:00", "巴格达"),
    EUROPE_MINSK("Europe/Minsk", "UTC+03:00", "明斯克"),
    ASIA_RIYADH("Asia/Riyadh", "UTC+03:00", "利雅得"),
    AFRICA_NAIROBI("Africa/Nairobi", "UTC+03:00", "内罗毕"),
    ASIA_TEHRAN("Asia/Tehran", "UTC+03:30", "德黑兰"),
    EUROPE_MOSCOW("Europe/Moscow", "UTC+04:00", "莫斯科,圣彼得堡,伏尔加格勒"),
    ASIA_TBILISI("Asia/Tbilisi", "UTC+04:00", "第比利斯"),
    ASIA_YEREVAN("Asia/Yerevan", "UTC+04:00", "埃里温"),
    ASIA_DUBAI("Asia/Dubai", "UTC+04:00", "阿布扎比,马斯喀特"),
    ASIA_BAKU("Asia/Baku", "UTC+04:00", "巴库"),
    INDIAN_MAURITIUS("Indian/Mauritius", "UTC+04:00", "路易港"),
    ASIA_KABUL("Asia/Kabul", "UTC+04:30", "喀布尔"),
    ASIA_TASHKENT("Asia/Tashkent", "UTC+05:00", "塔什干"),
    ASIA_KARACHI("Asia/Karachi", "UTC+05:00", "伊斯兰堡,卡拉奇"),
    ASIA_COLOMBO("Asia/Colombo", "UTC+05:30", "斯里加亚渥登普拉"),
    ASIA_KOLKATA("Asia/Kolkata", "UTC+05:30", "钦奈,加尔各答,孟买,新德里"),
    ASIA_KATHMANDU("Asia/Kathmandu", "UTC+05:45", "加德满都"),
    ASIA_ALMATY("Asia/Almaty", "UTC+06:00", "阿斯塔纳"),
    ASIA_DHAKA("Asia/Dhaka", "UTC+06:00", "达卡"),
    ASIA_YEKATERINBURG("Asia/Yekaterinburg", "UTC+06:00", "叶卡捷琳堡"),
    ASIA_YANGON("Asia/Yangon", "UTC+06:30", "仰光"),
    ASIA_BANGKOK("Asia/Bangkok", "UTC+07:00", "曼谷,河内,雅加达"),
    ASIA_NOVOSIBIRSK("Asia/Novosibirsk", "UTC+07:00", "新西伯利亚"),
    ASIA_KRASNOYARSK("Asia/Krasnoyarsk", "UTC+08:00", "克拉斯诺亚尔斯克"),
    ASIA_ULAANBAATAR("Asia/Ulaanbaatar", "UTC+08:00", "乌兰巴托"),
    ASIA_SHANGHAI("Asia/Shanghai", "UTC+08:00", "北京,重庆,香港,乌鲁木齐"),
    AUSTRALIA_PERTH("Australia/Perth", "UTC+08:00", "佩思"),
    ASIA_SINGAPORE("Asia/Singapore", "UTC+08:00", "吉隆坡,新加坡"),
    ASIA_TAIPEI("Asia/Taipei", "UTC+08:00", "台北"),
    ASIA_IRKUTSK("Asia/Irkutsk", "UTC+09:00", "伊尔库茨克"),
    ASIA_SEOUL("Asia/Seoul", "UTC+09:00", "首尔"),
    ASIA_TOKYO("Asia/Tokyo", "UTC+09:00", "大阪,札幌,东京"),
    AUSTRALIA_DARWIN("Australia/Darwin", "UTC+09:30", "达尔文"),
    AUSTRALIA_ADELAIDE("Australia/Adelaide", "UTC+09:30", "阿德莱德"),
    AUSTRALIA_HOBART("Australia/Hobart", "UTC+10:00", "霍巴特"),
    ASIA_YAKUTSK("Asia/Yakutsk", "UTC+10:00", "雅库茨克"),
    AUSTRALIA_BRISBANE("Australia/Brisbane", "UTC+10:00", "布里斯班"),
    PACIFIC_PORT_MORESBY("Pacific/Port_Moresby", "UTC+10:00", "关岛,莫尔兹比港"),
    AUSTRALIA_SYDNEY("Australia/Sydney", "UTC+10:00", "堪培拉,墨尔本,悉尼"),
    ASIA_VLADIVOSTOK("Asia/Vladivostok", "UTC+11:00", "符拉迪沃斯托克"),
    PACIFIC_GUADALCANAL("Pacific/Guadalcanal", "UTC+11:00", "所罗门群岛,新喀里多尼亚"),
    ETC_GMT_SUB_12("Etc/GMT-12", "UTC+12:00", "协调世界时+12"),
    PACIFIC_FIJI("Pacific/Fiji", "UTC+12:00", "斐济,马绍尔群岛"),
    ASIA_MAGADAN("Asia/Magadan", "UTC+12:00", "马加丹"),
    PACIFIC_AUCKLAND("Pacific/Auckland", "UTC+12:00", "奥克兰,惠灵顿"),
    PACIFIC_TONGATAPU("Pacific/Tongatapu", "UTC+13:00", "努库阿洛法"),
    PACIFIC_APIA("Pacific/Apia", "UTC+13:00", "萨摩亚群岛");

    /**
     * 时区id
     */
    final String zoneId;

    /**
     * 时区偏差
     */
    final String offset;
    /**
     * 描述
     */
    final String desc;

}
